const arr = [1, 3, [2, 4]]

function flatten1 (arr) {
  return arr.reduce((pre, item) => {
    if (!Array.isArray(item)) {
      pre.push(item)
    } else {
      pre = pre.concat(flatten1(item))
    }
    return pre
  }, [])
}

function flatten2 (array) {
  let arr = [].concat(...array)
  while(arr.some(item => Array.isArray(item))) { // arr中有元素是数组
    arr = [].concat(...arr)
  }

  return arr
}

console.log(flatten1(arr))
